
> module CHF.AbsM.Stack.IOStackElem (
> IOStackElem(),
> isRetTake,
> isRetPut,
> isRetBind,
> fromVarIOStack,
> mkRetTake,
> mkRetPut,
> mkRetBind
> )
>  where

> data IOStackElem v = RetTake | RetPut v | RetBind v
>   deriving (Eq,Show)


> -- | 'isRetTake' liefert True, wenn das Argument vom Typ RetTake ist
> isRetTake :: IOStackElem v -> Bool
> isRetTake RetTake = True
> isRetTake _ = False

> -- | 'isRetPut' liefert True, wenn das Argument vom Typ RetPut ist
> isRetPut :: IOStackElem v -> Bool
> isRetPut (RetPut v) = True
> isRetPut _ = False

> -- | 'isRetBind' liefert True, wenn das Argument vom Typ RetBind ist
> isRetBind :: IOStackElem v -> Bool
> isRetBind (RetBind v)= True
> isRetBind _ = False

> -- | 'mkRetTake' liefert RetTake
> mkRetTake :: IOStackElem v
> mkRetTake = RetTake

> -- | 'mkRetPut' liefert RetPut
> mkRetPut :: v -> IOStackElem v 
> mkRetPut v = RetPut v

> -- | 'mkRetBind' liefert RetBind
> mkRetBind :: v -> IOStackElem v 
> mkRetBind v = RetBind v

> -- | 'fromVarIOStack' liefert das v von RetPut oder RetBind
> fromVarIOStack :: IOStackElem v -> v
> fromVarIOStack (RetPut v) = v
> fromVarIOStack (RetBind v) = v


getestet mit:
*CHF.AbsM.Stack.IOStackElem> isRetBind (mkRetPut (fromVarIOStack (mkRetBind 42)))
False
*CHF.AbsM.Stack.IOStackElem> isRetPut (mkRetPut (fromVarIOStack (mkRetBind 42)))
True
*CHF.AbsM.Stack.IOStackElem> mkRetPut (fromVarIOStack (mkRetBind 42))
RetPut 42
*CHF.AbsM.Stack.IOStackElem> fromVarIOStack (mkRetBind 42)
42
